The typical data processing and storage system generally comprises one or more peripheral memory units, such as disk devices, which are connected to a central processor unit (CPU) through a disk control unit and a channel. The function of the memory units is to store data the CPU uses in performing its data processing tasks.
Various types of memory units are used in data processing systems. The response time and capacities of the memory devices used vary significantly, and in order to maximize system throughput while controlling costs, the choice of the particular type of memory unit to be used involves matching its response time to that of the CPU and its capacity to the storage needs of the data processing system. To minimize the impact on system throughput which may be caused by slow access devices, many data processing systems employ different types of memory units. Since the access time and capacity affects the cost of storage, a typical system may include a fast access small capacity directly accessible monolithic memory for data that is used frequently and a string of disk drives which are connected to the system through control units for data which is less frequently used. The storage capacities of these latter devices are generally several orders of magnitude greater than the monolithic memories and the storage cost/byte of data is less.
A problem exists if one of the large capacity memory units fails so that the information contained on that unit is no longer available to the system. Generally, such a failure will shut down the entire system. The prior art has suggested several ways of solving the problem. "IBM 3990 Storage Control Introduction," IBM publication GA 32-0098, in the chapter describing dual copy shows the provision of a duplicate set of memory units to store a duplicate file of all data. This is also shown in U. S. Pat. 4,837,680 of 1/6/89 to Crockett et al. While such a solution solves the problem, it increases the cost of storage and adversely impacts system performance since any change to stored data requires writing two records. It also adds the requirement of keeping track of where the duplicate records are stored in the event that the primary records are not available.
In systems in which the records are relatively small, it is possible to use error correcting codes which generate ECC (error correcting code) syndrome bits that are appended to the record. With ECC syndrome bits it is possible to correct small amounts of data that may be read erroneously. But this is generally not suitable for correcting or recreating long records which are in error or unavailable.
The prior art suggests other alternatives for solving the problem of a failure of one or more memory units. However, the suggested alternatives are suitable only for use in systems in which the data records are of fixed length. U.S. Pat. No. 4,092,732 of May 30, 1978 to Ouchi teaches the subdivision of records into a plurality of fixed length record segments which are stored together with a generated parity segment on a plurality of disk units. The Ouchi arrangement imposes a performance penalty in that his system does not match the physical characteristics of the emulated virtual device, such as the ability to slot sort (head switch within a cylinder) and the ability to switch between the individual heads of the same cylinder of a disk in one I/O operation. The Ouchi system can cause delays due to missed revolutions of the drive and head reorientation. In addition, large buffers and significant table overhead in the controlling mainframe is required to record and track where the virtual record segments are stored in the logical system. A data integrity exposure also exists in that if the tables are lost, destroyed, or a wrong version of a record or record segment is used by software, all of the data is lost.
The Ouchi system has a number of further disadvantages. It requires operating system modifications to accommodate variable length virtual records, such as those in the IBM CKD format. These modifications include extra commands and tables to map the virtual record data fields into the fixed length logical sectors shown by Ouchi. Ouchi also requires a special "clear buffer" command for his parity buffer 60. He also requires a special write command for each record segment. Ouchi also requires a special command to write the parity segment from his buffer 60. This requires an extra revolution of the Ouchi disk units to read successive records on the same virtual track since the time to write the parity byte of a first virtual record extends into the time available to read or write a second virtual record. For the same reason Ouchi cannot head switch between different tracks of the same virtual cylinder without missing revolutions while reading records in successive rotational positions. Because of these disadvantages, the Ouchi equipment does not emulate the physical characteristics of the virtual devices being emulated.
U.S. Pat. No. 4,775,978 of Oct. 4, 1988 to Hartness discloses the use of multiple memory devices plus a parity device to store records. However, Hartness has many of the disadvantages of Ouchi and doesn't support the physical characteristics of the emulated virtual device. Hartness requires operating system modifications and can only accommodate fixed length data fields. U.S. Pat. No. 4,817,035 of Mar. 28, 1989 to Timsit and U.S. Pat. No. 4,761,785 of Aug. 2, 1988 to Clark have similar disadvantages.
It can therefore be seen that it is a problem to provide a large capacity peripheral memory storage system for reliably storing records having variable length data fields in such a manner that a failure of one memory unit will not make the information stored on the unit unavailable to the CPU so as to cause a shutdown of the system or a substantial impairment in system operation. It is also a problem to provide a memory storage system that does not require operating system modifications, that can accommodate data fields of different lengths, and that can support the physical characteristics of the emulated virtual device.